
#include "main.h"

// 全局变量
uint8_t uart_rx_buffer[64];
uint16_t uart_rx_index = 0;
MotorCommand cmdType;
extern uint8_t timer_flag;

// static float bytesToFloat(uint8_t* data);

void bsp_Debugger_Init(void)
{
    uart_rx_index = 0;

    // 开启串口4的空闲中断
    __HAL_UART_ENABLE_IT(&huart4, UART_IT_IDLE);

    // 启动DMA接收
    HAL_UART_Receive_DMA(&huart4, uart_rx_buffer, sizeof(uart_rx_buffer));
}

void bsp_Debugger_ProcessCommands(uint8_t* rxbuffer)
{
    if(uart_rx_buffer[0] == 0x0A)
    {
        switch (uart_rx_buffer[1])
        {
            case 0x00:
            StateSwitch(Machine_STOP);
            timer_flag = 0;
            break;
            case 0x01:
            StateSwitch(Machine_RUN_INIT);
            timer_flag = 1;
            break;
            case 0x02:
            break;

            default:
            break;
        }
    }
    else if(uart_rx_buffer[0] == 0x0F)
    {
        StateSwitch(Machine_Prealignment);
        timer_flag = 1;
    }

    // /* 获取命令类型 */
    // cmdType = (MotorCommand) rxbuffer[0];

    // switch(cmdType)
    // {
    //     /* 启停 */
    //     case CMD_MOTOR_START_STOP:
    //     {
    //         if(rxbuffer[1] == 0x01) // 启动
    //         {
    //             StateSwitch(Machine_RUN_INIT);
    //             timer_flag = 1;
    //         }
    //         else if (rxbuffer[1] == 0x00) // 停止
    //         {
    //             StateSwitch(Machine_STOP);
    //             timer_flag = 0;
    //         }
    //     }
    //     break;

    //     case CMD_SET_POSITION:
    //     {
    //         Modes_of_operation = 1;  // 设置为位置模式

    //         MCStrategy.Position_Set = bytesToFloat(&rxbuffer[1]);// 设置位置值 (弧度制)
    //     }
    //     break;

        
    //     case CMD_SET_VELOCITY:
    //     {
    //         Modes_of_operation = 3;  // 设置为速度模式

    //         MCStrategy.Speed_Set = bytesToFloat(&rxbuffer[1]); // 设置速度值
    //     }
    //     break;

    //     case CMD_SET_CURRENT:
    //     {
    //         Modes_of_operation = 4;  // 设置为电流模式
    //             // 设置电流值
    //     }
    //     break;

    //     /* 预定位 */
    //     case CMD_PREALIGNMENT:
    //     {
    //         if(rxbuffer[1] == 0x01) // 预定位模式
    //         {
    //             Modes_of_operation = 6;
    //             StateSwitch(Machine_Prealignment);
    //             timer_flag = 1;
    //         }
    //     }
    //     break;

    //     default:
    //     {
    //         /* 未定义指令 */
    //     }
    //     break;
    // }
}

// static float bytesToFloat(uint8_t* data) 
// {
//     float result;
//     memcpy(&result, data, sizeof(float));
//     return result;
// }


